package com.controller;

import com.pojo.User;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import javax.xml.soap.SAAJMetaFactory;
import java.util.Arrays;
import java.util.List;

@RestController
@RequestMapping("/json/params")
public class ParamsJsonController {
    /**
     * 请求路径：localhost:8080/json/params/handler01
     *  此处直接接收json格式的String字符串 "hello json"
     */
    @RequestMapping("/handler01")
    public String handler01(@RequestBody String jsonStr){
        System.out.println(jsonStr);
        return "success-json01";
    }

    /**
     * 请求路径：localhost:8080/json/params/handler02
     *  POJO参数：json格式
     *  1、开启json数据格式自动转换，在配置类中开启@EnableWebMvc
     *  2、开启使用@RequestBody注解将外部传递的json数据映射到实体类对象中，要求属性名一一对应
     *  自动解析请求体中的json数据，并将数据封装到对应的pojo对象中
     *  传参：{"name":"tom","age":"20"}
     */
    @RequestMapping("/handler02")
    public String handler02(@RequestBody User user){
        System.out.println(user);
        return "success-json02-Pojo";
    }

    /**
     * 请求路径：localhost:8080/json/params/handler03
     *  集合参数：json格式
     *  1、开启json数据格式自动转换，在配置类中开启@EnableWebMvc
     *  2、开启使用@RequestBody注解将外部传递的json数据映射到形参的集合对象中作为数据
     *
     *  传参：["篮球","跑步"]
     */
    @RequestMapping("/handler03")
    public String handler03(@RequestBody List<String> list){
        System.out.println(list);
        return "success-json03-List";
    }

    /**
     * 请求路径：localhost:8080/json/params/handler04
     *  数组参数：json格式
     *  1、开启json数据格式自动转换，在配置类中开启@EnableWebMvc
     *  2、开启使用@RequestBody注解将外部传递的json数据映射到形参的集合对象中作为数据
     *
     *  传参：["篮球","跑步"]
     */
    @RequestMapping("/handler04")
    public String handler04(@RequestBody String hobbys[]){
        System.out.println(Arrays.toString(hobbys));
        return "success-json04-ListByArray";
    }

    /**
     * 请求路径：localhost:8080/json/params/handler04
     *  集合包类对象参数：json格式
     *  1、开启json数据格式自动转换，在配置类中开启@EnableWebMvc
     *  2、开启使用@RequestBody注解将外部传递的json数据映射到形参的集合对象中作为数据
     *
     *  传参：[{"name":"tom","age":2},{"name":"jim","age":1}]
     */
    @RequestMapping("/handler05")
    public String handler04(@RequestBody List<User> user){
        System.out.println(user);
        return "success-json04-List<POJO>";
    }

}
